package model;

import helper.Zugangsdaten;

import java.nio.charset.Charset;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * Die Klasse Benutzer.
 * 
 * @author Jonas Gutermuth
 */
public class Benutzer {

	private int id;

	private String vorname;

	private String nachname;

	private String passwort;

	private String email;

	private long erstellt;

	/**
	 * Gibt die Id zurück.
	 * 
	 * @return die ID
	 */
	public int getId() {
		return id;
	}

	/**
	 * Setzt die ID.
	 * 
	 * @param id
	 *            die ID
	 */
	public void setId(int id) {
		this.id = id;
	}

	/**
	 * Gibt den Vornamen zurück.
	 * 
	 * @return der Vorname
	 */
	public String getVorname() {
		return vorname;
	}

	/**
	 * Setzt den Vornamen.
	 * 
	 * @param vorname
	 *            der Vorname
	 */
	public void setVorname(String vorname) {
		this.vorname = vorname;
	}

	/**
	 * Gibt das gehashte Passwort zurück.
	 * 
	 * @return das Passwort (gehasht)
	 */
	public String getPasswort() {
		return passwort;
	}

	/**
	 * Setzt das gehashte Passwort.
	 * 
	 * @param passwort
	 *            das gehashte Passwort
	 */
	public void setPasswort(String passwort) {
		this.passwort = passwort;
	}

	/**
	 * Gibt die Emailadresse zurück.
	 * 
	 * @return die Emailadresse
	 */
	public String getEmail() {
		return email;
	}

	/**
	 * Setzt die Emailadresse.
	 * 
	 * @param email
	 *            die Emailadresse
	 */
	public void setEmail(String email) {
		this.email = email;
	}

	/**
	 * Gibt den Nachnamen zurück.
	 * 
	 * @return der Nachname
	 */
	public String getNachname() {
		return nachname;
	}

	/**
	 * Setzt den Nachnamen.
	 * 
	 * @param nachname
	 *            der Nachname
	 */
	public void setNachname(String nachname) {
		this.nachname = nachname;
	}

	/**
	 * Gibt das Erstellungsdatum zurück.
	 * 
	 * @return das Erstellungsdatum
	 */
	public long getErstellt() {
		return erstellt;
	}

	/**
	 * Setzt das Erstellungsdatum.
	 * 
	 * @param erstellt
	 *            das Erstellungsdatum
	 */
	public void setErstellt(long erstellt) {
		this.erstellt = erstellt;
	}

	/**
	 * Hasht einen String nach SHA-512.
	 * 
	 * @param text
	 *            der zu hashende String
	 * @return der gehashte String
	 * @throws NoSuchAlgorithmException
	 */
	public static String getHash(String text)
			throws NoSuchAlgorithmException {
		MessageDigest md = MessageDigest.getInstance("SHA-512");
		byte[] thedigest = md.digest((text + Zugangsdaten.HASHSALT).getBytes(Charset.forName("UTF-8")));

		StringBuffer hexString = new StringBuffer();
		for (int i = 0; i < thedigest.length; i++) {
			hexString.append(Integer.toHexString(0xFF & thedigest[i]));
		}
		return hexString.toString();
	}

}
